
use core::fmt::Debug;
use core::future::Future;

// rxy_core/src/maybe_traits.rs
pub use core::marker::Send as MaybeSend;
pub use core::marker::Sync as MaybeSync;

// rxy_ui/crates/rxy_core/src/view.rs
pub trait ViewKey: Clone + Debug + Sized + 'static {}

// rxy_core/src/renderer.rs
pub trait NodeTree {

}

// rxy_ui/crates/rxy_core/src/renderer.rs
pub trait Renderer: Clone + Debug + Sized + 'static {
   type NodeId: ViewKey;
   type NodeTree: NodeTree;

   type Task<T: MaybeSend + 'static>: MaybeSend + 'static;

   fn spawn_task<T: MaybeSend + 'static>(future: impl Future<Output = T> + MaybeSend +  'static) -> Self::Task<T>;

}

pub trait CommonRenderer: Renderer {

}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub struct MKRenderer;

impl MKRenderer {
   fn create_div() {

   }
}

#[macro_export]
macro_rules! define_common_view_fns {
    ($renderer: ident) => {
        fn div() {
            println!("div");
        }
    };
}

fn main() {
    define_common_view_fns!(MKRenderer);

    div();
}
